// pages/search/search.js
import request from '../../utils/request'

let isSend = false; // 函数防抖使用
Page({

    /**
     * 页面的初始数据
     */
    data: {
        searchDefault:'',//默认搜索关键字
        hotList:[], //热搜榜数据
        searchValue:'', // 用户输入的表单项数据
        searchList:[], //搜索结果列表
        historyList:[], //历史搜索记录列表
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        // 获取初始化搜索框关键字
        this.getInitData();

        // 获取本地搜索记录
        this.getSearchHistory();
    },

    //获取初始化数据
    async getInitData(){
        let searchDefaultData = await request('/search/default');
        let hotListData = await request('/search/hot/detail');
        this.setData({
            searchDefault:searchDefaultData.data.showKeyword,
            hotList:hotListData.data
        })
    },
    // 获取本地历史记录的功能函数
    getSearchHistory(){
        let historyList = wx.getStorageSync('searchHistory');
        if(historyList){
            this.setData({
                historyList
            })
        }
    },

    // 表单项内容发生改变的回调
    handleInputChange(event){
        // 更新searchValue的状态数据
        this.setData({
            searchValue:event.detail.value.trim()
        })

        // 函数节流  -- 每隔300毫秒执行一次
        if(isSend){
            return
        }
        isSend = true;
        this.getSearchList();
        setTimeout(async ()=>{        
            isSend = false;
        },300)        
    },

    //获取搜索数据的功能函数
    async getSearchList(){
        // 发送请求获取关键字模糊匹配数据
        if(!this.data.searchValue){//修复关键字为空发送请求错误
            this.setData({
                searchList:[]
            })
            return
        }
        let {searchValue,historyList} = this.data;

        let searchListData = await request('/search',{keywords:this.data.searchValue,limit:10})
        // 将搜索的关键字添加到搜索历史记录中
        if(historyList.indexOf(searchValue) != -1){
            historyList.splice(historyList.indexOf(searchValue),1);            
        }
        historyList.unshift(searchValue);      
        this.setData({
             historyList,
             searchList:searchListData.result.songs
        })

        wx.setStorageSync('searchHistory', historyList);
        
    },

    // 清空搜索框内容函数
    clearSearchValue(){
        console.log('sdsss')
        this.setData({
            searchValue:'',
            searchList:[]
        })
    },

    // 清空搜索历史记录
    delAllHistory(){
        wx.showModal({
          content:'确认删除所以记录？',
          success:(res)=>{
            if(res.confirm){
                //移除本地的历史记录缓存
                wx.removeStorageSync('searchHistory');
                // 清空data中的历史记录 historyList
                this.setData({
                    historyList:[]
                })
            }
          }
        })
    },

    //跳转至songDetail页面
    toSongDetail(event){
        let {song,index} = event.currentTarget.dataset;
        this.setData({
            index
        })
        //路由跳转传参：query 参数
        wx.navigateTo({
          url: '/pages/songDetail/songDetail?song=' + song
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})